package com.dragon.modules.yuegou.model.product;

import com.dragon.modules.yuegou.entity.product.SeckillEntity;
import com.dragon.modules.yuegou.enums.OwnerType;
import com.dragon.modules.yuegou.enums.product.SeckillStatus;
import com.dragon.modules.yuegou.model.merchant.Merchant;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

/**
 * 秒杀活动信息表模型类
 * 
 * @author pbuilder generated
 * @date 2019-09-18 11:19:27
 * @company sgy
 * @version 2.0
 * @see Length 长度限制
 * @see NotNull 对象非空
 * @see NotEmpty 字符串、集合、表、数组非空
 */
public class Seckill extends SeckillEntity {

	private Spu spu;

	private Sku sku;

	/** 商家属性 **/
	@ApiModelProperty("商户发布的秒杀活动：商家属性")
	private Merchant merchant;

	@ApiModelProperty("商圈发布的秒杀活动：可核销商户列表")
	private String merchantNames;

	@ApiModelProperty("miniAppId")
	private String miniAppId;

	@ApiModelProperty("详情地址")
	private String detailUrl;

	@ApiModelProperty("商品详情")
	private String description;

	@ApiModelProperty("商品图片详情")
	private String imgDescription;
	
	@ApiModelProperty("秒杀倒计时")
	private long countdown;
	
	/**
	 * 秒杀状态：0-进行中；1-未开始；2-已结束
	 */
	private Integer secKillStatus;

	private LocalDateTime useBeginTime;

	private LocalDateTime useEndTime;
	
	public Integer getSecKillStatus() {
		return secKillStatus;
	}

	public void setSecKillStatus(Integer secKillStatus) {
		this.secKillStatus = secKillStatus;
	}

	public long getCountdown() {
		return countdown;
	}

	public void setCountdown(long countdown) {
		this.countdown = countdown;
	}

	public LocalDateTime getViewBeginTime() {
		return viewBeginTime;
	}
	
	public LocalDateTime getViewEndTime() {
		return viewEndTime;
	}
	
	public LocalDateTime getBeginTime() {
		return beginTime;
	}
  	
	public LocalDateTime getEndTime() {
		return endTime;
	}
	
	public LocalDateTime getUseBeginTime() {
		return useBeginTime;
	}

	public void setUseBeginTime(LocalDateTime useBeginTime) {
		this.useBeginTime = useBeginTime;
	}

	public LocalDateTime getUseEndTime() {
		return useEndTime;
	}

	public void setUseEndTime(LocalDateTime useEndTime) {
		this.useEndTime = useEndTime;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public String getImgDescription() {
		return imgDescription;
	}

	public void setImgDescription(String imgDescription) {
		this.imgDescription = imgDescription;
	}

	public String getMiniAppId() {
		return miniAppId;
	}

	public void setMiniAppId(String miniAppId) {
		this.miniAppId = miniAppId;
	}

	public String getDetailUrl() {
		return detailUrl;
	}

	public void setDetailUrl(String detailUrl) {
		this.detailUrl = detailUrl;
	}

	public String getMerchantNames() {
		return merchantNames;
	}

	public void setMerchantNames(String merchantNames) {
		this.merchantNames = merchantNames;
	}

	public Spu getSpu() {
		return spu;
	}

	public void setSpu(Spu spu) {
		this.spu = spu;
	}

	public Merchant getMerchant() {
		return merchant;
	}

	public void setMerchant(Merchant merchant) {
		this.merchant = merchant;
	}

	public Sku getSku() {
		return sku;
	}

	public void setSku(Sku sku) {
		this.sku = sku;
	}

	/**
	 * 构造一个空秒杀活动信息表模型对象
	 */
	public Seckill() {
		super();
	}

	/**
	 * 依据实体对象的信息构造一个秒杀活动信息表模型对象
	 * 
	 * @param entity
	 *            实体对象
	 */
	public Seckill(SeckillEntity entity) {
		super(entity);
	}

	/**
	 * 依据其它对象的信息构造一个秒杀活动信息表模型对象
	 * 
	 * @param other
	 *            其它对象
	 */
	public Seckill(Seckill other) {
		super(other);
	}

	@Override
	public String getId() {
		return id;
	}

	/**
	 * 设置
	 * 
	 * @param id
	 * @return 当前对象
	 */
	public Seckill id(String id) {
		this.id = id;
		return this;
	}

	@Override
	public String getGroupId() {
		return groupId;
	}

	/**
	 * 设置集团ID
	 * 
	 * @param groupId
	 *            集团ID
	 * @return 当前对象
	 */
	public Seckill groupId(String groupId) {
		this.groupId = groupId;
		return this;
	}

	@Override
	public OwnerType getOwnerType() {
		return ownerType;
	}

	/**
	 * 设置[全局枚举]所有者类型：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT
	 * 
	 * @param ownerType
	 *            [全局枚举]所有者类型：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT
	 * @return 当前对象
	 */
	public Seckill ownerType(OwnerType ownerType) {
		this.ownerType = ownerType;
		return this;
	}

	@Override
	public String getMerchantId() {
		return merchantId;
	}

	/**
	 * 设置商家ID
	 * 
	 * @param merchantId
	 *            商家ID
	 * @return 当前对象
	 */
	public Seckill merchantId(String merchantId) {
		this.merchantId = merchantId;
		return this;
	}

	@Override
	public String getBusdId() {
		return busdId;
	}

	/**
	 * 设置
	 * 
	 * @param busdId
	 * @return 当前对象
	 */
	public Seckill busdId(String busdId) {
		this.busdId = busdId;
		return this;
	}

	@Override
	public String getSpuId() {
		return spuId;
	}

	/**
	 * 设置
	 * 
	 * @param spuId
	 * @return 当前对象
	 */
	public Seckill spuId(String spuId) {
		this.spuId = spuId;
		return this;
	}

	@Override
	public String getSkuId() {
		return skuId;
	}

	/**
	 * 设置
	 * 
	 * @param skuId
	 * @return 当前对象
	 */
	public Seckill skuId(String skuId) {
		this.skuId = skuId;
		return this;
	}

	@Override
	public String getTitle() {
		return title;
	}

	/**
	 * 设置秒杀名称
	 * 
	 * @param title
	 *            秒杀名称
	 * @return 当前对象
	 */
	public Seckill title(String title) {
		this.title = title;
		return this;
	}

	@Override
	public SeckillStatus getStatus() {
		return status;
	}

	/**
	 * 设置[枚举]活动状态：0-可用-NORMAL、1-禁用-DISABLE
	 * 
	 * @param status
	 *            [枚举]活动状态：0-可用-NORMAL、1-禁用-DISABLE
	 * @return 当前对象
	 */
	public Seckill status(SeckillStatus status) {
		this.status = status;
		return this;
	}

	@Override
	public String getCreatedBy() {
		return createdBy;
	}

	/**
	 * 设置
	 * 
	 * @param createdBy
	 * @return 当前对象
	 */
	public Seckill createdBy(String createdBy) {
		this.createdBy = createdBy;
		return this;
	}

	@Override
	public LocalDateTime getCreatedTime() {
		return createdTime;
	}

	/**
	 * 设置
	 * 
	 * @param createdTime
	 * @return 当前对象
	 */
	public Seckill createdTime(LocalDateTime createdTime) {
		this.createdTime = createdTime;
		return this;
	}

	@Override
	public String getModifiedBy() {
		return modifiedBy;
	}

	/**
	 * 设置
	 * 
	 * @param modifiedBy
	 * @return 当前对象
	 */
	public Seckill modifiedBy(String modifiedBy) {
		this.modifiedBy = modifiedBy;
		return this;
	}

	@Override
	public LocalDateTime getModifiedTime() {
		return modifiedTime;
	}

	/**
	 * 设置
	 * 
	 * @param modifiedTime
	 * @return 当前对象
	 */
	public Seckill modifiedTime(LocalDateTime modifiedTime) {
		this.modifiedTime = modifiedTime;
		return this;
	}

	@Override
	public Boolean getDel() {
		return del;
	}

	/**
	 * 设置
	 * 
	 * @param del
	 * @return 当前对象
	 */
	public Seckill del(Boolean del) {
		this.del = del;
		return this;
	}

	@Override
	public String getDelBy() {
		return delBy;
	}

	/**
	 * 设置
	 * 
	 * @param delBy
	 * @return 当前对象
	 */
	public Seckill delBy(String delBy) {
		this.delBy = delBy;
		return this;
	}

	@Override
	public LocalDateTime getDelTime() {
		return delTime;
	}

	/**
	 * 设置
	 * 
	 * @param delTime
	 * @return 当前对象
	 */
	public Seckill delTime(LocalDateTime delTime) {
		this.delTime = delTime;
		return this;
	}

	@Override
	public String getPosterImg() {
		return posterImg;
	}

	/**
	 * 设置海报图片
	 * 
	 * @param posterImg
	 *            海报图片
	 * @return 当前对象
	 */
	public Seckill posterImg(String posterImg) {
		this.posterImg = posterImg;
		return this;
	}
}
